package main

import (
	"bytes"
	"fmt"
	"github.com/vmihailenco/msgpack"
)

type Abc struct {
	BB   int
	Haha int
}

type Msg struct {
	ID  int
	Msg interface{}
}

func main() {

	var msg Msg
	msg.Msg = Abc{BB: 2, Haha: 3}
	//msg.ID = 111
	var buf bytes.Buffer
	msgpack.NewEncoder(&buf).StructAsArray(true).Encode(msg)
	data := buf.Bytes()
	fmt.Printf("%v\n", data)

	var workerMsg Msg
	realMsg := &Abc{}
	workerMsg.Msg = realMsg
	msgpack.Unmarshal(data, &workerMsg)
	fmt.Println(workerMsg, realMsg)

}
/** 两次输出:
[146 0 146 2 3]
{0 0xc00000a160} &{2 3}

[146 111 146 2 3]
{111 0xc000076100} &{2 3}

 */